package com.report.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.report.dto.request.*;
import com.report.dto.response.*;
import com.report.entity.Member;
import com.zmh.framework.util.Result;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author summer
 * @since 2024/06/25 14:54:50
 */
public interface IMemberService extends IService<Member> {

    /**
     * 会员登录
      * @param phone
     * @param password
     * @return
     */
    MemberRes login(String phone, String password);

    /**
     * 修改昵称
     * @param nickName
     * @param userId
     */
    void editNickName(String nickName, Integer userId);

    /**
     * 更换手机号码
     * @param webMemberRes
     */
    void changePhone(WebMemberReq webMemberRes);

    /**
     * 更新用户头像
     * @param webMemberRes
     */
    void updateAvatarUrl(WebMemberReq webMemberRes);

    /**
     * 根据id查询
     * @param convert
     * @return
     */
    MemberRes findById(Integer convert);

    /**
     * 查询列表
     * @param memberReq
     * @return
     */
    Page<MemberRes> lists(MemberReq memberReq);

    MemberRes getUserInfo();

    /**
     *
     * @param fromUser
     */
    WebMemberRes saveWxMember(String openId,String unionId);

    /**
     * 注册用户
     * @param sendPhoneReq
     */
    void registerUser(SendPhoneReq sendPhoneReq);

    /**
     * 修改用户密码
     * @param sendPhoneRe
     */
    void editUserPassword(SendPhoneReq sendPhoneRe);

    /**
     * 会员上传文件
     * @param file
     */
    void uploadPdf(MultipartFile file);

    /**
     * 获取会员信息
     * @return
     */
    MemberRes memberInfo();

    MemberRes getByMemberInfo(Integer memberId);

    /**
     * 更换微信
     * @param fromUser
     */
    Boolean updateWxMember(String fromUser);

    /**
     * 会员过期更改状态
     * @param integer
     */
    void updateMemberState(Integer id);

    /**
     * 获取用户信息
     * @param id
     * @return
     */
    MemberRes getMemberById(Integer id);

    /**
     * 阅读排名
     * @param readRankingReq
     * @return
     */
    List<ReadRankingRes> readRankingList(ReadRankingReq readRankingReq);

    /**
     * 个人排名
     * @param readRankingReq
     * @return
     */
    ReadRankingRes readRanking(ReadRankingReq readRankingReq);

    /**
     * 小程序收藏
     * @param webMemberCollectReq
     */
    void saveCollect(WebMemberCollectReq webMemberCollectReq);

    /**
     * 保存点赞
     * @param readRankingReq
     */
    void saveReadRanking(ReadRankingReq readRankingReq);

    /**
     * 修改会员信息
     * @param memberReq
     * @return
     */
    MemberRes modifyMember(MemberReq memberReq);

    /**
     * 保存会员
     * @param convert
     */
    void saveMember(Member convert);

    /**
     * 管理员更新用户信息
     * @param memberReq
     */
    void updateMemberInfo(MemberReq memberReq);

    /**
     * 查询统计
     * @return
     */
    PanelGroupRes panelGroup();

    /**
     * 统计
     */
    LineChartRes lineChart();
}
